// 1. string 字符串，默认为""
// 2. number 数值，包含整型和浮点数，默认为0
// 3. boolean 布尔值，默认false
// 4. null 空：var a = null; 声明了变量a为空值，默认为null
// 5, undefined 未定义: var a; 声明了变量a但是没有赋值，此时a=undefined
// 6. object 对象


/**
 * es6新增数据类型
*/
/**
 * 7. Symbol: 创建一个唯一值
 *      使用场景：
 *          1. 给对象设置唯一值属性
 *          2. 是某些js知识底层实现的机制
 *          3. 在派发行为标识统一进行管理时，可以基于symbol类型的值确认标识的唯一性
*/
let a1 = Symbol("AA")
let a2 = Symbol("AA")
console.log(a1 === a2); // false

let key = Symbol("AA");
let obj = {
    n: 10,
    10: 100,
    true: 1000,
    [key]: 10000
}
console.log(obj[key]); // 10000


/**
 * 8. BigInt: 大数类型
*       console.log(Number.MAX_SAFE_INTEGER); // 9007199254740991      js最大安全数
*       console.log(Number.MIN_SAFE_INTEGER); // -9007199254740991     js最小安全数
*       超过安全数后，运行计算或访问，结果会不正确！
*/
let res = BigInt("9007199254740991") + BigInt("12345"); // 9007199254753336n
res = res.toString()
console.log(res, typeof res); // 9007199254753336 string
